package com.hxzy.controller.admin.merchandiser.resp;

import cn.hutool.core.util.IdUtil;
import cn.hutool.jwt.JWTUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hxzy.common.constants.MarketConstants;
import com.hxzy.common.util.MarketThreadLocalUtil;
import com.hxzy.controller.admin.login.resp.AdminLoginResp;
import com.hxzy.entity.Merchandiser;
import com.hxzy.service.TokenService;
import io.swagger.annotations.ApiModel;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Getter
@Setter
@ApiModel(value = "商户数据")
public class MerchandiserResp {


    private Long id;

    /**
     * 商家名称
     */
    private String name;

    /**
     * 商家地址
     */
    private String address;

    /**
     * 联系电话
     */
    private String phone;

    /**
     * 商家图片
     */
    private String picture;

    /**
     *  商家位置经度
     */
    private BigDecimal longitude;

    /**
     * 商家位置纬度
     */
    private BigDecimal latitude;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;


    /**
     * 商家账户
     */
    private String loginName;



    /**
     * 审核状态（'0' 未审核，'1'审核通过 ，'2'审核不通过）
     */
    private String status;

    /**
     * 配置送半径
     */
    private Integer radius;

    /**
     * 身份证正面 url
     */
    private String idcardFrontUrl;

    /**
     * 身份证正面路径
     */
    private String idcardFront;


    /**
     * 身份证背面 url
     */
    private String idcardBackUrl;

    /**
     * 身份证背面路径
     */
    private String idcardBack;


    /**
     * 营业执照
     */
    private String bussinessLicenseUrl;

    /**
     * 营业执照
     */
    private String bussinessLicense;

    /**
     * json序列化和序列化需要
     */
    public MerchandiserResp() {
    }

    public MerchandiserResp(Merchandiser db){
       this.id=db.getId();
       this.address=db.getAddress();
       this.status=db.getStatus();
       this.loginName=db.getLoginName();
       this.createTime=db.getCreateTime();
       this.phone=db.getPhone();
       this.picture=db.getPicture();
       this.radius=db.getRadius();
       this.latitude=db.getLatitude();
       this.longitude=db.getLongitude();
       this.name=db.getName();
       this.idcardBack = db.getIdcardBack();
       this.idcardFront =db.getIdcardFront();
       this.bussinessLicense=db.getBussinessLicense();

       //身份证正面  http://localhost:8080/api/tencent/merchandiser/image?uuid=令牌id&type=1&token=admin-457ccbbe-0c46-498f-b071-53e4def3a05b
        this.idcardFrontUrl= buildUrl(db.getIdcardFrontUuid(),1);
       //身份证背面
        this.idcardBackUrl= buildUrl(db.getIdcardBackUuid(),3);
        //营业执照
        this.bussinessLicenseUrl= buildUrl(db.getBussinessLicenseUuid(),7);
    }


    private String buildUrl(String uuid,int type){

        AdminLoginResp adminLoginResp = MarketThreadLocalUtil.ADMIN_THREAD_LOCAL.get();
        String userUuid = adminLoginResp.getUuid();

        //把uuid还原成jwt
        Map<String,Object> dataMap=new HashMap<>();
        dataMap.put("uuid", userUuid);
        String jwt= JWTUtil.createToken(dataMap, TokenService.ADMIN_SINGATURE.getBytes());

        StringBuilder  url=new StringBuilder();
        url.append( MarketConstants.PRIVATE_BUCKET_IMAGE_SERVER);
        url.append("?");
        url.append("key=").append(uuid);
        url.append("&type=").append(type);
        url.append("&token="+jwt);
        url.append("&nostr="+ IdUtil.getSnowflakeNextIdStr());

        //写入到redis的  String  设定过期时间  60s    nostr字符串 为url生成过期时间的
        return url.toString();
    }

}
